﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.IO;


namespace PagesList
{
    class ExcelExportTool
    {
       public static void DataGridViewToExcel(DataGridView dgv)
       {
           SaveFileDialog dlg = new SaveFileDialog();
           dlg.Filter = "Execl files (*.xls)|*.xls";
           dlg.FilterIndex = 0;
           dlg.RestoreDirectory = true;
           dlg.CreatePrompt = true;
           dlg.Title = "保存为Excel文件";
           if (dlg.ShowDialog() == DialogResult.OK)
           {
               Stream myStream;
               myStream = dlg.OpenFile();
               StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
               string columnTitle = "";
               try
               {
                   //写入列标题
                   for (int i = 0; i < dgv.ColumnCount; i++)
                   {
                       if (i > 0)
                       {
                           columnTitle += "\t";
                       }
                       columnTitle += dgv.Columns[i].HeaderText;
                   }
                   sw.WriteLine(columnTitle);
                   //写入列内容
                   for (int j = 0; j < dgv.Rows.Count; j++)
                   {
                       string columnValue = "";
                       for (int k = 0; k < dgv.Columns.Count; k++)
                       {
                           if (k > 0)
                           {
                               columnValue += "\t";
                           }
                           if (dgv.Rows[j].Cells[k].Value == null)
                               columnValue += "";
                           else
                               columnValue += dgv.Rows[j].Cells[k].Value.ToString().Trim();
                       }
                       sw.WriteLine(columnValue);
                   }
                   sw.Close();
                   myStream.Close();
               }
               catch (Exception e)
               {
                   MessageBox.Show(e.ToString());
               }
               finally
               {
                   sw.Close();
                   myStream.Close();
               }
           }
       }
    }
}
